<!DOCTYPE html>
<!--
 *  Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree.
-->
<html>
<head>


    <base target="_blank">

    <title>Insertable Streams - Video</title>


</head>

<body>

<div id="container">
    <h1><a href="//webrtc.github.io/samples/" title="WebRTC samples homepage">WebRTC samples</a>
        <span>Video processing with insertable streams</span></h1>

    <p>This sample shows how to perform processing on a video stream using the experimental
        <a href="https://github.com/w3c/mediacapture-insertable-streams">insertable streams</a> API.
        There are options for the source of the input stream, the destination of the output stream,
        and the API used to transform the stream. There is also the option to duplicate the source
        stream to a video element on the page, which may affect the source FPS.
    </p>

    <span id="outputVideoContainer"></span>

    <div class="box">
        <span>Source:</span>
        <select id="sourceSelector" disabled>
            <option selected value="">(stopped)</option>
            <option value="camera">Camera</option>
            <option value="video">Video</option>
            <option value="canvas">Canvas</option>
            <option value="pc">Peer connection (from camera)</option>
        </select>
        <span>Add to page: <input type="checkbox" id="sourceVisible" disabled></span>
    </div>
    <div class="box">
        <span>Transform:</span>
        <select id="transformSelector" disabled>
            <option selected value="webgl">WebGL</option>
            <option value="canvas2d">Canvas2D</option>
            <option value="noop">Do nothing</option>
            <option value="drop">Drop frames at random</option>
            <option value="delay">Delay all frames by 100ms</option>
            <option value="webcodec">Run frames through WebCodec</option>
        </select>
    </div>
    <div class="box">
        <span>Destination:</span>
        <select id="sinkSelector" disabled>
            <option selected value="video">Video</option>
            <option value="pc">Peer connection</option>
        </select>
    </div>

    <p>View the console to see logging.</p>

    <p>
        <b>Note</b>: This sample is using an experimental API that has not yet been standardized. As
        of 2020-11-16, this API is available in Chrome M88 if the experimental code is enabled on
        the command line with
        <code>--enable-blink-features=WebCodecs,MediaStreamInsertableStreams</code>.
    </p>
    <a href="https://github.com/webrtc/samples/tree/gh-pages/src/content/insertable-streams/video-processing"
       title="View source for this page on GitHub" id="viewSource">View source on GitHub</a>

</div>


<script src="video-processing.js"></script>
</body></html>